case wp_field::igc_fxa:
case wp_field::igc_gfo:
case wp_field::igc_siu:
- case wp_field::igc_acz: {
- double value = fs_igc->get_value(member).value();
- if (global_opts.debug_level >= 6) {
- printf(MYNAME ": Writing KML SimpleArray data: %s of %f\n", name, value);
+ case wp_field::igc_acz:
+ if (fs_igc && fs_igc->get_value(member).has_value()) {
+ double value = fs_igc->get_value(member).value();
+ if (global_opts.debug_level >= 6) {
+ printf(MYNAME ": Writing KML SimpleArray data: %s of %f\n", name, value);
+ }
+ writer->writeTextElement(QStringLiteral("gx:value"), QString::number(value));
+ // No igc_fsdata present, but we still need to write out the SimpleArray.
+ // This can happen when merging tracks with different sets of IGC extensions.
+ } else {
+ if (global_opts.debug_level >= 7) {
+ printf(MYNAME ": Writing empty KML SimpleArray data for %s\n", name);
+ }
+ writer->writeTextElement(QStringLiteral("gx:value"), QString());
}
- writer->writeTextElement(QStringLiteral("gx:value"), QString::number(value));
break;
- }
default:
fatal("Bad member type");
}